Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO ■BRANCH4670 BIOS o BRANCH4670は、NECの総合ローカルエリアネットワークシステムである C&C-NETのBRANCH系サブシステムの製品である。 o PC-9864初代(ネットワークインターフェースセット)はBRANCH4670対応、 PC-9864L・U(B4670IIインターフェースセット)はBRANCH4670II対応の ネットワークインターフェースボード。 o BRANCH4670 BIOSは、以下の環境でサポートされる。 ■ノーマルモード - PC-9864初代 + PC-9864-02(BRANCH BIOS ROM) - PC-9864L・U(BIOS ROMは標準実装) * インターフェースボード上のROM内BRANCH BIOSを使用する ■ハイレゾモード - PC-9864初代 * 本体BIOS ROM内のBRANCH BIOSを使用する。ただし、PC-H98と98ハイレゾ ボード(PC-9821A-E02)はBRANCH BIOSをサポートしていない - PC-9864L・U * インターフェースボード上のROM内BRANCH BIOSを使用する 関連 ■ハイレゾ F800:7FE0h 0000:0400h bit 0 ■ハイレゾ,ノーマル 0000:0480h bit 5 0000:049A〜04ABh 0000:05E5〜05E7h INT 1Bh - Function 05h(BRANCH) INT 1Bh - Function 06h(BRANCH) INT D3h - Function 00h 分類 BRANCH4670 BIOS 名前 SEND MESSAGE 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=00h AH=コントロールデータ長(常に0として処理される) BX=ローカルRAMデータ領域の先頭アドレス CX=送信データ長 DH=送信先ソケット番号(80h,90h,A0h,B0h) DL=送信先ステーション番号 DI=リザルトレコードの先頭アドレス(DI+AH+3≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00h メッセージが正しく伝えられた(再送信なし) 01〜7Fh メッセージが正しく伝えられた(1〜127回再送信した) 80h メッセージが正しく伝えられなかった(リトライ回数オーバ) 81h メッセージデータ部が受信側バッファより長かった 82h メッセージが準備されていないソケットに送信された 83h メッセージコントロール部の長さが、受信側の長さと異なる 84h 指定できないソケット番号が指定された 86h 指定できないステーション番号が指定された 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった -------+----------------------------------------------------------- 解説 o 指定されたステーションのソケットにメッセージを送信する。 o 上位プログラムが設定したローカルRAM内のデータを、指定された ステーションのソケットに送信する。 o 送信結果を上位プログラムに通知する。 関連 INT D3h - Function 01h 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=01h ■PC-9864L・U + ノーマル + 0000:043Bh bit 4=0のとき INT D3h - Function 00hと同じ ■PC-9864L・U + ノーマル + 0000:043Bh bit 4=1 または ¥ PC-9864初代・L・U + ハイレゾのとき AH=コントロールデータ長 BX=ローカルRAMデータ領域の先頭アドレス CX=送信データ長 DH=送信先ソケット番号(80h,90h,A0h,B0h) DL=送信先ステーション番号 SI=リザルトレコードの先頭アドレス+1 出力 INT D3h - Function 00hと同じ 解説 o INT D3h - Function 00hと同じ 関連 INT D3h - Function 02h 分類 BRANCH4670 BIOS 名前 SETUP RECEIVE 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=02h AH=コントロールデータ長 BX=ローカルRAMデータ領域の先頭アドレス CX=受信データ長 DH=送信先ソケット番号(80h,90h,A0h,B0h) DI=リザルトレコードの先頭アドレス(DI+AH+3≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 84h 指定できないソケット番号が指定された 85h 指定されたソケットは既に使用されている 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった FEh 指定されたソケットが準備された -------+----------------------------------------------------------- 解説 o 上位プログラムが設定したローカルRAM内にデータを受信するため、指定 ソケットを準備する。 o 指定ソケットのソケット情報域に、リザルトレコードアドレスを設定する。 o 準備されたソケットが正しくデータを受信すると、リザルトレコードの 先頭バイト(リターンコード)には、トランスポータによって00hが 書き込まれる。 o 一度データを受信したソケットは、再びこのファンクションで準備を 行わなければ次のデータを受信できない。 関連 INT D3h - Function 03h 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=03h AH=コントロールデータ長 BX=ローカルRAMデータ領域の先頭アドレス CX=受信データ長 DH=送信先ソケット番号(80h,90h,A0h,B0h) ■PC-9864L・U + ノーマル DI=リザルトレコードの先頭アドレス ■PC-9864初代・L・U + ハイレゾ SI=リザルトレコードの先頭アドレス+1 出力 INT D3h - Function 02hと同じ 解説 o ノーマルモードでは、0000:043Bh bit 5=0のとき、INT D3h - Function 02hと 全く同じ処理を行う。0000:043Bh bit 5=1のときは、INT D3h - Function 02h の一部の処理をスキップして実行する。詳細不明。 o ハイレゾモードでは、使用するレジスタが一部異なる以外、 INT D3h - Function 02hと同じ処理を行う。 関連 INT D3h - Function 04h 分類 BRANCH4670 BIOS 名前 END RECEIVE 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=04h DH=送信先ソケット番号(80h,90h,A0h,B0h) DI=リザルトレコードの先頭アドレス(DI≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00h 指定されたソケットが開放された 84h 指定できないソケット番号が指定された 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった -------+----------------------------------------------------------- 解説 o 指定されたソケットを開放する。 o 開放されたソケットは、再度SETUP RECEIVEファンクションを実行するまで データ受信ができない。 関連 INT D3h - Function 05h 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=05h DH=送信先ソケット番号(80h,90h,A0h,B0h) ■PC-9864L・U + ノーマルのとき DI=リザルトレコードの先頭アドレス ■PC-9864初代・L・U + ハイレゾのとき SI=リザルトレコードの先頭アドレス+1 出力 INT D3h - Function 04hと同じ 解説 o ノーマルモードでは、INT D3h - Function 04hと全く同じ処理を行う。 o ハイレゾモードでは、使用するレジスタが一部異なる以外、 INT D3h - Function 04hと同じ処理を行う。 関連 INT D3h - Function 06h 分類 BRANCH4670 BIOS 名前 INITIALIZE 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=06h DI=リザルトレコードの先頭アドレス(DI≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00〜3Fh 自局のステーション番号 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった 89h BRANCH4670 I/Fボードがない -------+----------------------------------------------------------- 解説 o BNAの初期化とBRANCH4670 BIOSワークエリアの初期設定をする。 o 以下の処理を行う。 - I/O 008Fhからステータスを引き取り、割り込み番号を調べて割り込み ベクタを設定する。 - ローカルRAMを初期化する。 - BNAを初期化する。 - BRANCH4670 BIOSワークエリアを初期化する。 - 割り込みコントローラのマスクを解除する。 - 自局のステーション番号を返す。 関連 INT D3h - Function 07h 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=07h ■PC-9864L・U + ノーマルのとき DI=リザルトレコードの先頭アドレス ■PC-9864初代・L・U + ハイレゾのとき SI=リザルトレコードの先頭アドレス+1 出力 INT D3h - Function 06hと同じ 解説 o ノーマルモードでは、0000:043Bh bit 3=0のとき、INT D3h - Function 06hと 全く同じ処理を行う。0000:043Bh bit 3=1のときは、INT D3h - Function 06h の一部の処理をスキップして実行する。詳細不明。 o ハイレゾモードでは、使用するレジスタが一部異なる以外、 INT D3h - Function 06hと同じ処理を行う。 関連 INT D3h - Function 08h 分類 BRANCH4670 BIOS 名前 WHO AM I 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=08h DI=リザルトレコードの先頭アドレス(DI≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00〜3Fh 自局のステーション番号 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった -------+----------------------------------------------------------- 解説 o 自局のステーション番号を通知する。ステーション番号は、PC-9864 (ネットワークインターフェースボード)のDIP SWで設定する。 関連 INT D3h - Function 09h 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=09h AH=不明 DH=不明 ■PC-9864L・U + ノーマルのとき DI=リザルトレコードの先頭アドレス ■PC-9864初代・L・U + ハイレゾのとき SI=リザルトレコードの先頭アドレス+1 出力 INT D3h - Function 08hと同じ 解説 o ノーマルモードでは、AH=00h,DH=07hでこのファンクションを実行すると、 INT D3h - Function 08hと全く同じ処理を行う。それ以外の場合、詳細不明。 o ハイレゾモードでは、使用するレジスタが一部異なる以外、 INT D3h - Function 08hと同じ処理を行う。 関連 INT D3h - Function 0Ah 分類 BRANCH4670 BIOS 名前 ECHO 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=0Ah DL=相手側ステーション番号 DI=リザルトレコードの先頭アドレス(DI≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 80h 相手側ステーションから応答が返ってこなかった 86h 指定できないステーション番号が指定された 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった C0h 相手側ステーションが正しく応答を返した -------+----------------------------------------------------------- 解説 o 相手側のBNAが正しく接続されていて、動作可能かどうかを調べる。 関連 INT D3h - Function 0Bh 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=0Bh AH=不明 DL=相手側ステーション番号 ■PC-9864L・U + ノーマルのとき DI=リザルトレコードの先頭アドレス ■PC-9864初代・L・U + ハイレゾのとき SI=リザルトレコードの先頭アドレス+1 出力 AL=リターンコード 解説 o AH=00h,FFh以外のとき、INT D3h - Function 0Ahと全く同じ処理を行う。 AH=00hまたはFFhのときは詳細不明。 o ハイレゾモードでは、使用するレジスタが一部異なる以外、 INT D3h - Function 0Ahと同じ処理を行う。 関連 INT D3h - Function 0Ch 分類 BRANCH4670 BIOS 名前 PEEK/POKE 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=0Ch AH=PEEK/POKE指定 00h: PEEK指定 FFh: POKE指定 BX=ピコプロセッサアドレス DL=POKEデータ(POKE指定時) DI=リザルトレコードの先頭アドレス(DI≦0FFFh) 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00h 正常終了(POKE指定時) 87h コマンドが実行できなかった(ハードウェアエラー) 88h タイムアウトになった nnh ピコプロセッサの指定アドレスの内容(PEEK指定時) -------+----------------------------------------------------------- 解説 o 自局のBNAの内部メモリ内容を取得(PEEK)、変更(POKE)する。 表 BNAの内部メモリの内容 -------+----------------------------------------------------------- オフセット 内容 -------+----------------------------------------------------------- 00E1h メッセージ送信失敗時の最大リトライ回数(初期値=0Ah) 00E2h 各パケットの最後に送られるトレーリングフラグの数¥ (初期値=0Ah。ユーザ変更禁止) 00E3h 遅延カウンタ用の係数(ユーザ変更禁止) 00E4h ACKパケットのリーディングフラグの数 00E5h 喪失パケットカウンタ(ユーザ変更禁止) 00E6h 衝突回避用中断カウンタ(ユーザ変更禁止) 00E7h 前回エラー発生時のADLC受信ステータス(ユーザ変更禁止) 00E8h 割り込みエラーカウンタ(ユーザ変更禁止) 00E9h 転送アンダーランカウンタ(ユーザ変更禁止) 00EAh 6854レジスタ値(ユーザ変更禁止) -------+----------------------------------------------------------- 関連 INT D3h - Function 0Dh 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=0Dh ■PC-9864L・U + ノーマル + 0000:043Bh bit 6=0のとき AH=PEEK/POKE指定 00h: PEEK指定 FFh: POKE指定 BX=ピコプロセッサアドレス DL=POKEデータ(POKE指定時) DI=リザルトレコードの先頭アドレス ■PC-9864L・U + ノーマル + 0000:043Bh bit 6=1のとき 不明 ■PC-9864初代・L・U + ハイレゾのとき SI=リザルトレコードの先頭アドレス+1 出力 AL=リターンコード 解説 o ノーマルモードでは、0000:043Bh bit 6=0のとき、INT D3h - Function 0Chと 全く同じ処理を行う。0000:043Bh bit 6=1のときは、独自の処理を行う。詳細 不明。 o ハイレゾモードでは、使用するレジスタが一部異なる以外、 INT D3h - Function 0Chと同じ処理を行う。 INT D3h - Function 0Eh 分類 BRANCH4670 BIOS 名前 PUT DATA 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=0Eh BX=転送先のローカルRAMの先頭アドレス CX=転送データ長(BX+CX≦0FFFh) DS:SI=転送先の本体RAMアドレス 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00h 正常終了 -------+----------------------------------------------------------- 解説 o 本体RAMのデータをローカルRAMに転送する。 関連 INT D3h - Function 0Fh 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=0Fh BX=転送先のローカルRAMの先頭アドレス CX=転送データ長(BX+CX≦0FFFh) DS:SI=転送先の本体RAMアドレス 出力 INT D3h - Function 0Ehと同じ 解説 o INT D3h - Function 0Ehと全く同じ処理を行う。 関連 INT D3h - Function 10h 分類 BRANCH4670 BIOS 名前 GET DATA 対象 PC-9864初代・L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=10h BX=転送先のローカルRAMの先頭アドレス CX=転送データ長(BX+CX≦0FFFh) DS:SI=転送先の本体RAMアドレス 出力 AL=リターンコード -------+----------------------------------------------------------- 値 内容 -------+----------------------------------------------------------- 00h 正常終了 -------+----------------------------------------------------------- 解説 o ローカルRAMのデータを本体RAMに転送する。 関連 INT D3h - Function 11h 分類 BRANCH4670 BIOS 名前 不明 Undocumented 対象 PC-9864L・U + ノーマル PC-9864初代・L・U + ハイレゾ 入力 AL=11h BX=転送先のローカルRAMの先頭アドレス CX=転送データ長(BX+CX≦0FFFh) DS:SI=転送先の本体RAMアドレス 出力 INT D3h - Function 10hと同じ 解説 o INT D3h - Function 10hと全く同じ処理を行う。 関連